1. Technical Field
This disclosure generally relates to computer systems, and more specifically relates to deploying cloud-based computing solutions to a cloud computing environment.
2. Background Art
The combination of hardware and software on a particular computer system defines a computing environment. Different hardware platforms and different operating systems thus provide different computing environments. In recent years, engineers have recognized that it is possible to provide different computing environments on the same physical computer system by logically partitioning the computer system resources to different computing environments known as virtual machines. The System X computer system developed by IBM is an example of a computer system that supports logical partitioning into multiple virtual machines. If multiple virtual machines on a System X computer system are desired, partition manager code (referred to as a “hypervisor” in IBM terminology) is installed that allows defining different virtual machines on the same platform. Once the partition manager is installed, virtual machines may be created that define different computing environments. The partition manager manages the logical partitions to assure that they can share needed resources in the computer system while maintaining the separate computing environments defined by the virtual machines.
Virtual machines are used extensively in computing solutions that are cloud-based. As the demands for cloud solutions increase, open source software for building clouds, such as OpenStack, have become a building block for creating a reliable and flexible cloud platform. With increasing complexities and demands, cloud deployment and enablement is one of the major hurdles for cloud computing. For example, to deploy a cloud infrastructure not only involves complex manipulation of physical nodes, but also various software tools, packages and configurations.
Within a typical distributed cloud environment, there are many nodes assigned with various roles such as: Cloud Controller, Network Controller, Compute Node, and Storage Nodes. Each role requires different software packages, configurations, service end points, operating system customization, firewall rules, network settings, storage setup, security, usability, etc. Cloud enablement is currently handled by field engineers who manually configure the cloud environment, and deployment time can take weeks and is very error-prone.